package com.bigzero.workflow.common.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Knife4j配置类
 *
 * @author fanxinxiong
 * @since 2025-02-08
 */
@Configuration
public class Knife4jConfig {

    /**
     * 创建了一个api接口的分组
     * 除了配置文件方式创建分组，也可以通过注册bean创建分组
     */
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                // 分组名称
                .group("workflow-api")
                // 接口请求路径规则
                .pathsToMatch("/**")
                .build();
    }

    /**
     * 配置基本信息
     */
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        // 标题
                        .title("Knife4j整合Swagger3 Api接口文档")
                        // 描述Api接口文档的基本信息
                        .description("Knife4j后端接口服务...")
                        // 版本
                        .version("v1.0.0")
                        // 设置OpenAPI文档的联系信息,姓名,邮箱。
                        .contact(new Contact().name("fanxinxiong").email("896934834@qq.com"))
                        // 设置OpenAPI文档的许可证信息，包括许可证名称为"Apache 2.0"，许可证URL为"http://springdoc.org"。
                        .license(new License().name("Apache 2.0").url("http://springdoc.org"))
                );
    }

//    @Bean
//    public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer(){
//        return openApi -> {
//            // 可以自定义一些配置,如：
//            // 配置全局鉴权参数-Authorize
//           // 根据@Tag 上的排序,写入x-order
//        };
//    }
//
//
//    @Bean
//    public OpenAPI openApi() {
//        return
//                new OpenAPI().info(new io.swagger.v3.oas.models.info.Info()
//                        .description("Knife4j后端接口服务...")
//                        .version("v1.0.0")
//                        .title("Knife4j整合Swagger3 Api接口文档"));
//    }

}
